package valids

import (
	"ns/pkg/xtypes"
	"regexp"
)

var (
	// UserType 用户类型 G:政府 B:银行 E:物业 D:开发商
	UserType = map[string]string{
		"G": "政府",
		"B": "银行",
		"E": "物业",
		"D": "开发商",
	}
	// ProxyMode 代理模式
	ProxyMode = map[int]string{
		1: "自管",
		2: "代管",
	}
)

// ValidMobile 验证手机号码是否合法
func ValidMobile(mobile string) bool {
	if len(mobile) != 11 {
		return false
	}
	// 正则匹配手机号码
	rgx := regexp.MustCompile(`^1[3-9]\d{9}$`)
	return rgx.MatchString(mobile)
}

// ValidEmail 验证邮箱是否合法
func ValidEmail(email string) bool {
	rgx := regexp.MustCompile(`^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$`)
	return rgx.MatchString(email)
}

// ValidUserType 验证用户类型是否合法
func ValidUserType(userType string) bool {
	_, ok := UserType[userType]
	return ok
}

// ValidProxyMode 验证代理模式是否合法
func ValidProxyMode(proxyMode int) bool {
	_, ok := ProxyMode[proxyMode]
	return ok
}

// ValidAreaLevel 验证用户等级是否合法
func ValidAreaLevel(userLevel xtypes.AreaLevel) bool {
	switch userLevel.Level {
	case 1:
		if userLevel.Province == "" {
			return false
		}
	case 2:
		if userLevel.Province == "" || userLevel.City == "" {
			return false
		}
	case 3:
		if userLevel.Province == "" || userLevel.City == "" || userLevel.Area == "" {
			return false
		}
	default:
		return false
	}
	return true
}
